Database Configuration in ASP.NET Core
ASP.NET Core में डेटाबेस का कॉन्फ़िगरेशन
पिछले लेख में हमने लॉगिंग के संदर्भ में कॉन्फ़िगरेशन सोर्स, कॉन्फ़िगरेशन डाटा और कॉन्फ़िगरेशन प्रोवाइडर को समझा है। अब लॉगिंग के बाद डेटाबेस कॉन्फ़िगरेशन के संदर्भ में कॉन्फ़िगरेशन सोर्स, कॉन्फ़िगरेशन डाटा और कॉन्फ़िगरेशन प्रोवाइडर को समझते हैं। ASP.NET Core में यह बिल्कुल उसी कॉन्फ़िगरेशन इंफ्रास्ट्रक्चर का हिस्सा होता है, लेकिन इसका उपयोग आमतौर पर कनेक्शन स्ट्रिंग और EF Core जैसे ORM के संदर्भ में किया जाता है।
चलिए इसी आधार पर तीनों घटकों को — सरल भाषा और शैली में — व्यावहारिक उदाहरणों और स्पष्ट दृष्टिकोण से समझते हैं:
1. Configuration Source (कॉन्फ़िगरेशन स्रोत)
वह जगह या माध्यम जहाँ से डेटाबेस संबंधी सेटिंग्स (जैसे ConnectionStrings) को पढ़ा जाता है।
🔹 आम स्रोत:
स्रोत | उदाहरण |
---|---|
appsettings.json | "ConnectionStrings": { "Default": "..." } |
Environment Variables | ConnectionStrings__Default="..." |
Secret Manager | development में sensitive data छिपाने हेतु |
Azure App Configuration | क्लाउड में centralized config |
Command-Line arguments | --ConnectionStrings:Default=... |
उदाहरण – appsettings.json:
{ "ConnectionStrings": { "Default": "Server=.;Database=MyAppDb;Trusted_Connection=True;" }}
2. Configuration Provider (कॉन्फ़िगरेशन प्रदाता)
Configuration Source से डेटा को पढ़ने और IConfiguration के रूप में ऐप तक पहुंचाने वाला घटक।
प्रकार:
Provider | कार्य |
---|---|
JsonConfigurationProvider | appsettings.json को पढ़ता है |
EnvironmentVariablesConfigurationProvider | OS env vars पढ़ता है |
UserSecretsConfigurationProvider | dev secrets पढ़ता है |
CommandLineConfigurationProvider | CLI arguments पढ़ता है |
कार्य: सभी प्रोवाइडर्स key-value के रूप में सेटिंग्स को unified रूप में उपलब्ध कराते हैं। जैसे:
var connectionString = configuration["ConnectionStrings:Default"];
3. Configuration Data (कॉन्फ़िगरेशन डेटा)
वह अंतिम डेटा जो IConfiguration के रूप में उपलब्ध होता है और जिसे आप डेटाबेस कॉन्फ़िगरेशन (जैसे EF Core) में inject करते हैं।
यह डेटा HostBuilder द्वारा load होने के बाद runtime में उपलब्ध होता है।
उदाहरण:
builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
यहाँ builder.Configuration → सभी configuration providers से data ले चुका होता है।
यह तीनों कैसे मिलकर काम करते हैं?
Configuration Source ↓
(JSON, Env Vars, Secrets...)
Configuration Provider ↓
(key-value pairs में बदलता है)
Configuration Data (IConfiguration) ↓
Application Code (e.g., AddDbContext)
व्यावहारिक दृष्टांत (Metaphor से समझिए):
कल्पना कीजिए कि आपकी एप्लिकेशन एक रसोईघर है, और उसे पकाने के लिए डेटाबेस नाम की सामग्री चाहिए:
घटक | उपमा |
---|---|
Configuration Source | वह स्थान जहाँ रेसिपी लिखी है (किताब, नोटबुक, वेबसाइट) |
Configuration Provider | वह व्यक्ति जो रेसिपी पढ़कर आपको समझाता है |
Configuration Data | अंतिम रूप में वह जानकारी जो आप सीधे इस्तेमाल करते हैं खाना बनाने में (ingredients list, steps) |
निष्कर्ष सारणी:
तत्व | भूमिका | उदाहरण |
---|---|---|
Configuration Source | सेटिंग्स कहाँ से आ रही हैं | appsettings.json, Env Vars |
Configuration Provider | Source को पढ़कर usable format में लाता है | JsonConfigurationProvider |
Configuration Data | वह डेटा जो ऐप runtime में पढ़ती है | IConfiguration["ConnectionStrings:Default"] |
एक Demo कोड स्निपेट:
var builder = WebApplication.CreateBuilder(args);
// Source: appsettings.json
// Provider: JsonConfigurationProvider
var connStr = builder.Configuration.GetConnectionString("Default");
// Data usage
builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(connStr));
टिप्पणियाँ
एक टिप्पणी भेजें